#!/usr/bin/python
# -*- coding: UTF-8 -*-

"""
给你单链表的头节点 head ，请你反转链表，并返回反转后的链表。
 
    示例 1：
        输入：head = [1,2,3,4,5]
        输出：[5,4,3,2,1]
    示例 2：
        输入：head = [1,2]
        输出：[2,1]
    示例 3：
        输入：head = []
        输出：[]
"""


# Definition for singly-linked list.
# class ListNode(object):
#     def __init__(self, val=0, next=None):
#         self.val = val
#         self.next = next
class Solution(object):
    def reverseList(self, head):
        """
        :type head: ListNode
        :rtype: ListNode
        """
        pre = None
        cur = head
        while cur:
            # 利用临时变量存储cur的下一个节点信息，用于后续cur指针移位
            tmp = cur.next
            #将cur的下一节点指向pre，即转向
            cur.next = pre
            # 将cur节点信息赋予pre（目的：pre指针移位）
            pre = cur
            # 将cur指针后移（达到各节点转向，达到循环终止条件）
            cur = tmp
        return pre